#!/usr/bin/python
#-*-<coding=UTF-8>-*-
import wx

class MyFrame(wx.Frame):
	def __init__(self):
		"""
		定义__init__方法，相当于其它面向对象语言的构造函数，在创建类的对象时
		会自动调用.
		"""
		#调用父类的初始化函数，为什么要这么做？当然，同样的，父类的初始化也会被自动调用.
		wx.Frame.__init__(self, None,-1,"MyFrame",size=(300,300))
		#创建面板控件
		panel = wx.Panel(self,-1)
		#绑定事件，类型为wx.MOTION,主要用来侦测鼠标移动.
		panel.Bind(wx.EVT_MOTION,self.OnMove)
		#创建静态文件，用来在面板上显示信息
		wx.StaticText(panel,-1,"Pos:",pos=(10,12))
		"""
		创建文本输入框，同时将此对象赋给self.posCtrl. 之前一直不明白，为什么要赋值给self.posCtrl.
		现在看起来，是因为在__init__方法中定义的变量，可以在整个类方法中引用，如下面的OnMove()方法中，
		不知道理解对不对.
		"""
		self.posCtrl = wx.TextCtrl(panel,-1,"",pos=(40,10))

	def OnMove(self,event):
		"""
		self.OnMove是由Bind函数调用的. 但是这个地方一直感觉很突兀.
		event是如何传递及工作的，没有太明白.
		"""
		pos = event.GetPosition()
		#在文本框中显示当前鼠标的位置
		self.posCtrl.SetValue("%s,%s" %(pos.x,pos.y))

if __name__ == '__main__':
	app = wx.PySimpleApp()
	frame = MyFrame()
	frame.Show(True)
	app.MainLoop()
